/*
 * @Author: huangge
 * @Date: 2018-04-20 15:36:51
 * @Last Modified by: huangge
 * @Last Modified time: 2018-04-26 14:10:20
 */
// 基础图表
// TODO: 保存时不存数据 rows: [],
function basicChart(e, onlyId, pos, i) {
  return {
    chartId: onlyId, //图表id
    chartName: '',
    datasheet: {
      datasheetId: e.resId, // 数据表ID
      filters: '',
      field: [], // 字段
    },
    options: {
      data: {
        columns: [], //指标和维度
        rows: e.data, //数据内容
      },
      settings: {
        dimension: [], // 维度
        metrics: [], // 数值
      },
      extend: {},
    },
    appearance: {
      type: '', // 图表类型
      configType: '', //图表配置类型
      parentType: 'BasicChart', //父分类
      position: {
        // 图表位置信息
        i: String(i + 1),
        x: pos.x,
        y: pos.y,
        w: 6,
        h: 6,
        minH: 2,
        minW: 2,
      },
      colorStyle: [], // 图表外观配置
    },
    function: {
      earlyWarn: '', // 预警
      subline: '', // 辅助线
    },
    noteInformation: '', // 备注信息
  };
}

// 地图
function map(e, onlyId, pos, i) {
  return {
    chartId: onlyId, //图表id
    chartName: '',
    appearance: {
      type: e.relEleType, // 图表类型
      parentType: 'MapItem', //父分类
      position: {
        // 图表位置信息
        i: String(i + 1),
        x: pos.x,
        y: pos.y,
        w: 6,
        h: 6,
        minH: 2,
        minW: 2,
      },
      colorStyle: [], // 图表外观配置
    },
    options: {
      // 组件名称为key，内部两个字段，data（组件所需数据），settings（组件配置）
      // TileWMSLayer: {
      //   data: {
      //     'sdk:bou2_4p': [
      //       {
      //         servicestype: 12,
      //         servicesurl:
      //           'http://192.168.1.166:8080/geoserver/sdk/wms?service=WMS&version=1.1.0&request=GetMap&cql_filter=ADCODE99=630000&layers=sdk:bou2_4p&styles=&bbox=73.44696044921875,6.318641185760498,135.08583068847656,53.557926177978516&width=768&height=588&srs=EPSG:4326&format=application/openlayers',
      //         title: 'sdk:bou2_4p',
      //       },
      //       {
      //         servicestype: 6,
      //         servicesurl:
      //           'http://192.168.1.166:8080/geoserver/sdk/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=sdk:bou2_4p&maxFeatures=50&outputFormat=application%2Fjson',
      //         title: 'sdk:bou2_4p',
      //       },
      //     ],
      //   },
      // },
    },
    noteInformation: '', // 备注信息
  };
}

// 表单
function form(e, onlyId, pos, i) {
  return {
    chartId: onlyId, //图表id
    chartName: '',
    datasheet: {
      datasheetId: e.resId, // 数据表ID
      filters: '',
      field: [], // 字段
    },
    options: {
      data: {
        columns: [], //指标和维度
        rows: e.data, //数据内容
      },
      settings: {}, //表格设置
    },
    appearance: {
      type: e.eleType, // 图表类型
      configType: '', //图表配置类型
      parentType: 'FormItem', //父分类
      position: {
        // 图表位置信息
        i: String(i + 1),
        x: pos.x,
        y: pos.y,
        w: 6,
        h: 6,
        minH: 2,
        minW: 2,
      },
      colorStyle: [], // 图表外观配置
    },
    function: {
      earlyWarn: '', // 预警
      subline: '', // 辅助线
    },
    noteInformation: '', // 备注信息
  };
}

// 图片
function img(e, onlyId, pos, i) {
  return {
    chartId: onlyId, //图表id
    chartName: '',
    appearance: {
      type: e.eleType, // 图表类型
      parentType: 'imgItem', //父分类
      position: {
        // 图表位置信息
        i: String(i + 1),
        x: pos.x,
        y: pos.y,
        w: 3,
        h: 6,
        minH: 2,
        minW: 2,
      },
      colorStyle: [], // 图表外观配置
    },
    options: {
      scaleMode: 'stretch',
      url: '', //图片链接
    },
    noteInformation: '', // 备注信息
  };
}

// 文本
function text(e, onlyId, pos, i) {
  return {
    chartId: onlyId, //图表id
    chartName: '',
    appearance: {
      type: e.eleType, // 图表类型
      parentType: 'TextItem', //父分类
      position: {
        // 图表位置信息
        i: String(i + 1),
        x: pos.x,
        y: pos.y,
        w: 4,
        h: 3,
        minH: 1,
        minW: 1,
      },
      colorStyle: [], // 图表外观配置
    },
    options: {
      text: '', //编辑内容
      style: {
        //文本样式
        fontSize: '32px',
        color: '#333333',
        background: '#fff',
        textAlign: 'center',
        fontWeight: 'normal',
        fontStyle: 'normal',
        textDecoration: 'none',
      },
    },
    noteInformation: '', // 备注信息
  };
}

//外部链接
function frame(e, onlyId, pos, i) {
  return {
    chartId: onlyId, //图表id
    chartName: '',
    appearance: {
      type: e.eleType, // 图表类型
      parentType: 'FrameItem', //父分类
      position: {
        // 图表位置信息
        i: String(i + 1),
        x: pos.x,
        y: pos.y,
        w: 8,
        h: 6,
        minH: 2,
        minW: 2,
      },
      colorStyle: [], // 图表外观配置
    },
    options: {
      text: '', //外部链接
    },
    noteInformation: '', // 备注信息
  };
}

// 外部应用
function externalApp(e, onlyId, pos, i) {
  return {
    chartId: onlyId, //图表id
    chartName: '',
    appearance: {
      type: e.eleType, // 图表类型
      parentType: 'ExternalApp', //父分类
      position: {
        // 图表位置信息
        i: String(i + 1),
        x: pos.x,
        y: pos.y,
        w: 6,
        h: 6,
        minH: 2,
        minW: 2,
      },
      colorStyle: [], // 图表外观配置
    },
    options: {
      url: '', //外部链接
    },
    noteInformation: '', // 备注信息
  };
}

//模板应用
function templateApp(e, onlyId, pos, i) {
  return {
    chartId: onlyId, //图表id
    chartName: '',
    options: {
      info: e.templateInfo, //模板信息
      data: [], //模板数据
      settings: {}, //模板配置
    },
    appearance: {
      type: e.eleType, // 图表类型
      configType: '', //图表配置类型
      parentType: 'TemplateApp', //父分类
      position: {
        // 图表位置信息
        i: String(i + 1),
        x: pos.x,
        y: pos.y,
        w: 12,
        h: 16,
        minH: 2,
        minW: 2,
      },
      colorStyle: [], // 图表外观配置
    },
    function: {
      earlyWarn: '', // 预警
      subline: '', // 辅助线
    },
    noteInformation: '', // 备注信息
  };
}

//地图模板
function overlapMap(e, onlyId, pos, i) {
  return {
    chartId: onlyId, //图表id
    chartName: '',
    options: {
      info: e.templateInfo, //模板信息
      data: [], //模板数据
      settings: {}, //模板配置
    },
    appearance: {
      type: e.relEleType, // 图表类型
      configType: '', //图表配置类型
      parentType: 'TemplateMap', //父分类
      position: {
        // 图表位置信息
        i: String(i + 1),
        x: pos.x,
        y: pos.y,
        w: 12,
        h: 12,
        minH: 2,
        minW: 2,
      },
      colorStyle: [], // 图表外观配置
    },
  };
}

function custom(e, onlyId, pos, i) {
  return {};
}

export function componentManager(e, onlyId, pos, i) {
  switch (e.relEleType) {
    case 'basicChart':
      return basicChart(e, onlyId, pos, i);
      break;
    case 'mapItem':
      return map(e, onlyId, pos, i);
      break;
    case 'formItem':
      return form(e, onlyId, pos, i);
      break;
    case 'textItem':
      return text(e, onlyId, pos, i);
      break;
    case 'imgItem':
      return img(e, onlyId, pos, i);
      break;
    case 'frameItem':
      return frame(e, onlyId, pos, i);
      break;
    case 'externalApp':
      return externalApp(e, onlyId, pos, i);
      break;
    case 'templateApp':
      return templateApp(e, onlyId, pos, i);
      break;
    case 'overlapMap':
      return overlapMap(e, onlyId, pos, i);
      break;
    case 'customItem':
      return custom(e, onlyId, pos, i);
      break;
    default:
      break;
  }
}
